package cn.isjinhao.se.sql.evaluation.object;

import cn.isjinhao.se.sql.evaluation.EvaluationException;

import java.util.List;

/**
 * 引用一张表。一张表在OOP中是一个Pojo类型的List集合。
 *
 * @author 01395265
 * @date 2021/4/16
 */
public class TableWrapper extends Wrapper<List<?>> {

    private boolean isEmpty = false;

    /**
     * @param list      一张表
     * @param pojoClazz 表里向量的数据类型
     * @param name      表的名称
     */
    public TableWrapper(List<?> list, Class<?> pojoClazz, String name) {
        super(list, pojoClazz, name);
    }

    @Override
    protected void assertValue() {
        if (obj == null || obj.isEmpty()) {
            isEmpty = true;
            return;
        }
        for (Object next : obj) {
            if (clazz.isAssignableFrom(next.getClass())) {
                throw new EvaluationException("表里每一个元素的类型都需要能被指定的类型接收");
            }
        }
    }

    public boolean isEmpty() {
        return isEmpty;
    }

}
